#ifndef SORTEO_H_
#define SORTEO_H_

#include "Logger.h"
#include <string>

class Sorteo{

	std::string** bolillero;
	int nivelLleno ;

public:

	Sorteo(){
		this->nivelLleno = 0;
		this->bolillero = (string **)malloc(100*sizeof(string*));

	}

	void agregarElemento(const string& elemento, unsigned short int probabilidad){
		if( (probabilidad >= 0) && (probabilidad <= (100 - this->nivelLleno) ) ){
			
			for(int i=0; i < probabilidad ; i++){
				this->bolillero[this->nivelLleno + i] = new string(elemento) ;
			}

			nivelLleno += probabilidad;

		}else{
			Logger::getInstance()->warn("Nivel de probabilidad fuera de rango o la suma excede 100 %");
		}
	}

	std::string* getElementoSorteado(){
		// Para evitar error si esta medio lleno 
		int r = rand() % this->nivelLleno ;
		std::stringstream ss ;
		ss << "SORTEO RANDOM: " << r ;
		Logger::getInstance()->debug(ss.str());
		return this->bolillero[r] ;
	}

	~Sorteo(){
		free(this->bolillero);
	}

};


#endif